void main() {
  /**
   * Dart 数据类型 - LIST
   *  遍历:
   *    1. for循环
   *    1. for (var i = 0; i < list.length; i++) {
   *        print(list[i]);
   *      }
   *    2. for (var element in list) {
   *        print(element);
   *      } 
   *    3. forEach 遍历列表
   *    4. map 返回一个遍历的列表，生成一个新的列表
   *    5. where 返回满足条件的咧白哦
   *    6. any 只要有一个元素满足条件，就返回true
   *    7. every 只要有一个元素不满足条件，就返回false
   *    8. reduce 对列表中的元素进行累加
   *    9. reduceRight 对列表中的元素进行累加，从右向左
   */
  List list = new List.generate(10, (i) => i * 10);

  // 1. for循环
  for (var i = 0; i < list.length; i++) {
    print(list[i]);
  }
  print('-----------------');
  // 2. for (var element in list) {
  for (var element in list) {
    print(element);
  }

  print('-----------------');
  // 3. forEach 遍历列表
  list.forEach((element) {
    print(element);
  });

  print('-----------------');
  // 4. map 返回一个遍历的列表，生成一个新的列表
  List list2 = list.map((element) => element * 2).toList();
  print(list2);

  print('-----------------');
  // 5. where 返回满足条件的列表
  List list3 = list.where((element) => element > 10).toList();
  print(list3);

  print('-----------------');
  // 6. any 只要有一个元素满足条件，就返回true
  bool any = list.any((element) => element > 10);
  print(any);

  print('-----------------');
  // 7. every 只要有一个元素不满足条件，就返回false
  bool every = list.every((element) => element > 10);
  print(every);

  print('-----------------');
  // 8. reduce 对列表中的元素进行累加
  int reduce = list.reduce((value, element) => value + element);
  print(reduce);

  print('-----------------');

  // 9. 扩展
  List list4 = [
    [5, 6, 7, 8],
    [5, 6, 7, 8],
  ];
  print('未扩展: $list4');
  var list5 = list4.expand((element) => {element}).toList();
  print('扩展: $list5');
}
